#ifndef _FPUREGISTERLIST_H_
#define _FPUREGISTERLIST_H_


enum FPU_REG_INDEX
{
	FPU_REG_ST_0,
	FPU_REG_ST_1,
	FPU_REG_ST_2,
	FPU_REG_ST_3,
	FPU_REG_ST_4,
	FPU_REG_ST_5,
	FPU_REG_ST_6,
	FPU_REG_ST_7,
	FPU_REG_STATE,
	FPU_REG_STATUS_IE,
	FPU_REG_STATUS_DE,
	FPU_REG_STATUS_ZE,
	FPU_REG_STATUS_OE,
	FPU_REG_STATUS_UE,
	FPU_REG_STATUS_PE,
	FPU_REG_STATUS_SF,
	FPU_REG_STATUS_ES,
	FPU_REG_STATUS_C0,
	FPU_REG_STATUS_C1,
	FPU_REG_STATUS_C2,
	FPU_REG_STATUS_TOP,
	FPU_REG_STATUS_C3,
	FPU_REG_STATUS_B,
	FPU_REG_CONTROL,
	FPU_REG_CONTROL_IM,
	FPU_REG_CONTROL_DM,
	FPU_REG_CONTROL_ZM,
	FPU_REG_CONTROL_OM,
	FPU_REG_CONTROL_UM,
	FPU_REG_CONTROL_PM,
	FPU_REG_CONTROL_PC,
	FPU_REG_CONTROL_RC,
	FPU_REG_CONTROL_X,
	FPU_REG_TAG_WORD,
	FPU_REG_TAG_0,
	FPU_REG_TAG_1,
	FPU_REG_TAG_2,
	FPU_REG_TAG_3,
	FPU_REG_TAG_4,
	FPU_REG_TAG_5,
	FPU_REG_TAG_6,
	FPU_REG_TAG_7,
	FPU_REG_COUNT,
};

class CFpuRegisterList	: public CWispList
{
	HANDLE		m_hFpuRegItem[FPU_REG_COUNT];
	COLORREF	m_ChgColor;
	COLORREF	m_NormalColor;
public:
	DECLARE_WISP_MSG_MAP
	DECLARE_WISP_MSG(OnCreate)
	DECLARE_WISP_MSG(OnGetFocus)
	void UpdateContext();
	void ResetContext();
	void UpdateContextWin32();
	int GetCPUIndex()const {return m_nCPUIndex;}
	void SetCPUIndex(int Index) {m_nCPUIndex=Index;}
private:
	int	m_nCPUIndex;
	X86_CPU_REG_PTR m_X86RegPtr;
	FPU_SAVE_STATUS m_PrevFPUStatus;
};


#endif /* _FPUREGISTERLIST_H_ */

